package cn.tedu.oop;
/**本类用于测试代码块*/
public class TestBlock {

    public static void main(String[] args) {
        System.out.println("666");//如果知识业务操作，没有创建对象，是不会执行构造方法的
        Pig p1=new Pig();
        Pig p2=new Pig("中午好");
        Pig p3=new Pig("水果",3);
        p1.eat();
    }
}
//1.创建一个小猪类用来测试
class Pig{
    //2.定义属性
    String food;
    int age;
    //4.创建本类的构造代码块
    {/**构造代码块{}
     1.位置：类里方法外
     2.执行时机：每次创建对象时都会执行构造代码块，并且构造代码块优先于构造方法执行
     3.作用：用于提取所有构造方法的共性功能*/
        System.out.println("我是一个构造代码块~");
        System.out.println("黑猪肉");
    }
    //5.提供本类的构造方法
    public Pig(){
        System.out.println("无参构造");
    }
    public Pig(String s){
        System.out.println("含参构造"+s);
    }
    public Pig(String food, int age) {
        this.food = food;
        this.age = age;
        System.out.println("全参构造");
    }

    //3.定义方法
    public void eat(){
        System.out.println("小猪爱吃菜叶子");
        //创建局部代码块
        {
            /**局部代码块{}
             *1.位置：方法里
             * 2.执行实际：调用局部代码块所处的方法时才会执行
             * 3.作用：用于控制变量的作用范围，变量的作用范围越小越好*/

            System.out.println("我是一个局部代码块");
        }
    }
}